Users have access to an increasing variety of content providers that provide an ever increasing array of content. Television services, for instance, are widely used for delivering content. Subscribers of television services are offered a broad assortment of content, including traditional broadcast programs and movies. Newer, interactive television (ITV) systems expand the assortment of content that may be provided from a content provider. ITV systems offer the same traditional services of familiar cable television as well as a variety of new additional interactive services, such as the use of applications. Examples of applications include video-on-demand (VOD) which permits a user to order and watch streaming videos whenever desired, home shopping applications which enable a user to browse various stores and catalogs on television and order products from home, and financial applications which allow a user to conduct banking and other financial transactions using the television. Additionally, users may also access computer applications from the content provider, such as games, Internet browsers, email applications, and so on.
To provide this content to the users, a content provider may be configured to include a plurality of content servers. The number of content servers utilized by a content provider may range from a few content servers to over several hundred content servers. The content servers may be configured to provide “stateless” processing of requests that are made by users. Statelessness refers to a situation in which no signature is maintained of previous requests made by the user. Therefore, each request that is made by a user is processed based on information that is included in the request. By providing stateless processing on a content server, the processing of a request made by a user may be efficiently performed utilizing a variety of techniques. For example, the content provider may employ load balancing to distribute the processing of the requests provided by a plurality of users. Each request may be distributed by a load balancer to a different content server depending on the processing that is being performed and/or that will be performed by each of the content servers. Therefore, successive requests that are made by a single user may be routed to a different content server depending on the “load” of each content server.
During operation of the content provider, it is desirable to record actions reflecting operation of the content servers. The process of recording actions is referred to as “logging”. Actions may be logged in data storage devices and later analyzed for usage and operation of the content servers. Because of the statelessness of the content servers, however, logging actions has been difficult because each request made by a user may be processed by a different content server of the content provider. If tracking of a user's requests was desired, such as is beneficial in e-commerce applications, the requests were routed to a single content server, thereby removing the statelessness of the content provider. Due to the loss of statelessness, the content provider could not utilize load balancing, virtual IP addresses, and so on. In the past, for example, successive requests that were made by a user were routed to the same content server to provide stateful processing of requests.
In an e-commerce application, for instance, a user may select items for purchase on a variety of different web pages that are provided by the content provider. To track the items selected by the user, each item that was selected by the user was formed into a request that was communicated to a single content server. Although this allowed for the tracking of request from the user, it defeated the load balancing functionality of the content provider, thereby resulting in inefficient use of the content servers of the content provider.
Therefore, there is a continuing need to provide for logging of actions such that the actions may be tracked without defeating functionality provided by stateless processing of the requests.